From: Dan Winship Date: Tue, 3 Nov 2009 21:05:54 +0000 (-0500) Subject: Add params.js, for function param object parsing. X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~10642 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=e9787c0f1e4a377749b2906397ccb5dac4d06e38;p=gnome-shell.git Add params.js, for function param object parsing. --- diff --git a/js/misc/Makefile.am b/js/misc/Makefile.am index 084a45cad..9118b1f5c 100644 --- a/js/misc/Makefile.am +++ b/js/misc/Makefile.am @@ -2,4 +2,5 @@ jsmiscdir = $(pkgdatadir)/js/misc dist_jsmisc_DATA = \ docInfo.js \ - format.js + format.js \ + params.js diff --git a/js/misc/params.js b/js/misc/params.js new file mode 100644 index 000000000..77c51b9e4 --- /dev/null +++ b/js/misc/params.js @@ -0,0 +1,33 @@ +/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ + +// parse: +// @params: caller-provided parameter object, or %null +// @default: function-provided defaults object +// @allowExtras: whether or not to allow properties not in @default +// +// Examines @params and fills in default values from @defaults for +// any properties in @defaults that don't appear in @params. If +// @allowExtras is not %true, it will throw an error if @params +// contains any properties that aren't in @defaults. +// +// If @params is %null, this returns @defaults. +// +// Return value: the updated params +function parse(params, defaults, allowExtras) { + if (!params) + return defaults; + + if (!allowExtras) { + for (let prop in params) { + if (!(prop in defaults)) + throw new Error('Unrecognized parameter "' + prop + '"'); + } + } + + for (let prop in defaults) { + if (!(prop in params)) + params[prop] = defaults[prop]; + } + + return params; +} \ No newline at end of file